/*
 * @Description: 首页相关接口
 * @Date: 2023-06-09 14:43:08
 * @LastEditTime: 2024-04-26 09:31:57
 * @FilePath: \node-backend-services\router\home.js
 */
const fs = require('fs')
// 导入 express
const express = require('express')
// 创建路由对象
const router = express.Router()

const home_handler = require('../router_handler/home')
const tool = require('../router_handler/tool')

// 导入解析 formdata 格式表单数据的包
const multer = require('multer')
// 导入处理路径的核心模块
const path = require('path')


let createAddress = (folderName) => {
  let createFolder = function (folder) {
    try {
      fs.accessSync(folder); // 打开文件夹
    } catch (e) {
      fs.mkdirSync(folder); // 创建文件夹
    }
  };
  let uploadFolder = `./upload/${folderName}`; // 设定存储文件夹为当前目录下的 /upload 文件夹
  createFolder(uploadFolder);

  // 2. 设置磁盘存贮
  let storage = multer.diskStorage({
    destination: function (req, file, cb) {
      cb(null, uploadFolder); // 他会放在当前目录下的 /upload 文件夹下（没有该文件夹，就新建一个）
    },
    filename: function (req, file, cb) { // 在这里设定文件名

      cb(null, decodeURI(file.originalname)); // file.originalname是将文件名设置为上传时的文件名，file中携带的

      // cb(null, Date.now() + '-' + file.originalname) // 加上Date.now()可以避免命名重复
    }
  })

  return multer({
    fileFilter (req, file, callback) {
      // 解决中文名乱码的问题 latin1 是一种编码格式
      file.originalname = Buffer.from(file.originalname, "latin1").toString(
        "utf8"
      );
      callback(null, true);
    },
    storage: storage
  });
}



// 新增新首页轮播图图片
// router.post('/add', upload.single('img'), home_handler.addArticle)

//获取首页轮播图图片
router.get('/swiperdata', home_handler.getSwiperData)

//首页分类接口
router.get('/catedata', home_handler.getCataData)

//在upload创建自定义文件夹，再导入数据
router.post('/importFileData', createAddress('jsonData').single('file'), tool.importFileData)

//导入excel，导入八股文
router.post('/importQuestion', createAddress('excelQuestion').single('file'),tool.importQuestion)


router.get("/sse", (req, res) => {
  res.set({
    'Content-Type': 'text/event-stream', //设定数据类型
    'Cache-Control': 'no-cache',// 长链接拒绝缓存
    'Connection': 'keep-alive' //设置长链接
  });
  console.log("进入到长连接了")
  //持续返回数据
  setInterval(() => {
    // console.log("正在持续返回数据中ing")
    const data = {
      message: `Current time is ${new Date().toString()}`
    };
    res.write(`data: ${JSON.stringify(data)}\n\n`);
  }, 5000);
})
// 向外共享路由对象
module.exports = router